# This is a simple gitlab continuous integration template (compatible with the shared runner provided on gitlab.com)
# using the official mono docker image to build a visual studio project.
#
# MyProject.sln
#   MyProject\
#     MyProject\
#        MyProject.csproj (console application)
#     MyProject.Test\
#        MyProject.Test.csproj (test library using nuget packages "NUnit" and "NUnit.ConsoleRunner")
#
# Please find the full example project here:
# https://gitlab.com/tobiaskoch/gitlab-ci-example-mono
#
# You can copy and paste this template into a new `.gitlab-ci.yml` file.
# You should not add this template to an existing `.gitlab-ci.yml` file by using the `include:` keyword.
#
# To contribute improvements to CI/CD templates, please follow the Development guide at:
# https://docs.gitlab.com/ee/development/cicd/templates.html
# This specific template is located at:
# https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/gitlab/ci/templates/Mono.gitlab-ci.yml

# see https://hub.docker.com/_/mono/
image: mono:latest

stages:
  - build
  - test
  - deploy

before_script:
  - nuget restore -NonInteractive

release:
  stage: deploy
  rules:
    - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
  artifacts:
    paths:
      - build/release/MyProject.exe
  script:
    # The output path is relative to the position of the csproj-file
    - msbuild /p:Configuration="Release" /p:Platform="Any CPU"
      /p:OutputPath="./../../build/release/" "MyProject.sln"

debug:
  stage: test
  script:
    # The output path is relative to the position of the csproj-file
    - msbuild /p:Configuration="Debug" /p:Platform="Any CPU"
      /p:OutputPath="./../../build/debug/" "MyProject.sln"
    - mono packages/NUnit.ConsoleRunner.3.6.0/tools/nunit3-console.exe build/debug/MyProject.Test.dll

deploy:
  stage: deploy
  script: echo "Define your deployment script!"
  environment: production
